/*
 * FeedExpress
 * (C) Copyright 2003 Jeppe Cramon (jeppe@cramon.dk)
 * 
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 * 
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 * 
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 * 
 * Disclaimer:
 * -----------
 * This software is provided "as is" without warranty of any kind,
 * either expressed or implied. The entire risk as to the
 * quality and performance of the software is with you. Should the
 * software prove defective, you assume the cost of all necessary
 * servicing, repair, or correction. In no event shall the author,
 * copyright holder, or any other party who may redistribute the
 * software be liable to you for damages, including any general,
 * special, incidental, or consequential damages arising out of
 * the use or inability to use the software (including, but not
 * limited to, loss of data, data being rendered inaccurate, loss of
 * business profits, loss of business information, business
 * interruptions, loss sustained by you or third parties, or a
 * failure of the software to operate with any other software) even
 * if the author, copyright holder, or other party has been advised
 * of the possibility of such damages. 
 * 
 */
using System;
using System.Configuration;

namespace Pbdms.BusinessLogic.RSS
{
	/// <summary>
	/// CacheFactory, creates a single instance of the cache handler
	/// Reads the application settings from the App.config file with the following keys:
	/// CacheUri - The location where the cache is placed
	/// CacheHandler - The Type name for the Cache handler (e.g. FeedExpress.FeedCache)
	/// </summary>
	public class CacheFactory
	{	
		private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
		private static CacheFactory self = new CacheFactory();
        private Common.Interfaces.ICache mCache = null;

		private CacheFactory() {

            string path =Common.Global.startupPath()+"\\temp\\cache.dat";
			if (log.IsDebugEnabled) {
				log.Debug("CacheURIPath: " + path);
			}
			Uri uri = new Uri(path);
            mCache = (Common.Interfaces.ICache)Activator.CreateInstance(Type.GetType("Pbdms.BusinessLogic.RSS.FeedCache"), new object[] { uri });
		}

		public static CacheFactory getInstance() {
			return self;
		}

        public Common.Interfaces.ICache getCacheHandler()
        {
			return mCache;
		}
	}
}